﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PlanProd.SincDesviosSanJuan
{
    public class ProgParam
    {
        public string Modo { get; set; }

        public string Destino { get; set; }

        public DateTime? FechaDesde { get; set; }
        public DateTime FechaHasta { get; set; }

        public bool DoRange { get; set; }

        public bool PrintUsage { get; set; }

        public void ParseArgs(string[] args)
        {
            this.FechaDesde = DateTime.Now.Date.AddDays(-1);

            if (args.Length == 0)
                PrintUsage = true;
            else
            {
                int i = 0;
                try
                {
                    for (i = 0; i < args.Length; )
                    {
                        if (args[i] == "-f") 
                        {
                            Destino = args[i + 1];
                            i = i + 2;
                        }

                        if (i < args.Length)
                        {
                            if (args[i] == "-t") 
                            {
                                Modo = args[i];                                
                                i++;

                                // parametro opcional del numero de dias
                                if (i < args.Length)
                                {
                                    DoRange = true;
                                    int diasMenos = 0;
                                    if (Int32.TryParse(args[i], out diasMenos))
                                    {
                                        diasMenos = -1 * (diasMenos + 1);
                                        FechaDesde = DateTime.Now.Date.AddDays(diasMenos);
                                        FechaHasta = DateTime.Now.Date.AddDays(-1);
                                        i++;
                                    }
                                }
                            }
                            else if (args[i] == "-d")
                            {
                                Modo = args[i];
                                FechaDesde = DateTime.ParseExact(args[i + 1], "yyyyMMdd", null);
                                i = i + 2;
                            }
                            else if (args[i] == "-r")
                            {
                                Modo = args[i];
                                FechaDesde = DateTime.ParseExact(args[i + 1], "yyyyMMdd", null);
                                FechaHasta = DateTime.ParseExact(args[i + 2], "yyyyMMdd", null);
                                i = i + 3;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    PrintUsage = true;
                }

                if (String.IsNullOrEmpty(Modo))
                {
                    PrintUsage = true;
                }
            }
        }
    }
}
